import AsyncStorage from '@react-native-async-storage/async-storage';

class Storage {
    /**
     * 添加数据
     * @param {string} key 
     * @param {*} value 
     * @returns {Promise<void>}
     */
    static set(key, value){
        return AsyncStorage.setItem(key, JSON.stringify(value));
    }

    /**
     * 获取数据
     * @param {string} key 
     * @returns {Promise<any>}
     */
    static get(key){
        return AsyncStorage.getItem(key).then((value) => {
            if (value && value!== null) {
                return JSON.parse(value);
            }
        }).catch((error)=>{
            console.log(error);
            return null;
        })
    }

    /**
     * 更新数据
     * @param {string} key 
     * @param {*} newValue 
     * @returns {Promise<void>}
     */
    static updated(key, newValue) {
        return AsyncStorage.getItem(key).then(oldValue => {
            newValue = typeof newValue === 'string' ? newValue : Object.assign({}, oldValue, newValue);
            return AsyncStorage.setItem(key, JSON.stringify(newValue));
        }).catch((error) => {
            console.log(error);
        });
    }

    /**
     * 删除数据
     * @param {string} key 
     * @returns {Promise<void>}
     */
    static delete(key){
        return AsyncStorage.removeItem(key);
    }

    /**
     * 清空数据
     * @returns {Promise<void>}
     */
    static clear(){
        return AsyncStorage.clear();
    }

}

export default Storage;